如何在python中实现自定义函数中的“位置参数”? 您所在的位置:网站首页 python 函数def 如何在python中实现自定义函数中的“位置参数”?

如何在python中实现自定义函数中的“位置参数”?

2023-02-10 06:40| 来源: 网络整理| 查看: 265

python3.8在PEP 570被接受之后添加了位置参数特性,在函数签名的文档中发现该特性之前,该特性指示函数不接受任何关键字参数。函数定义中正斜杠(/)之前的参数仅用于定位,后跟斜杠(/)的参数可以是语法规定的任何类型。其中,参数仅根据调用函数时的位置Map到仅用于定位的参数。通过关键字(name)传递仅用于定位的参数无效。下面的示例显示了仅包含位置参数的函数定义

def foo(a, b, / , x, y): print("positional ", a, b) print("positional or keyword", x, y)

在上面的函数定义中,参数a和b只能作为位置参数传递,而x或y可以是位置参数或关键字。以下函数调用有效

foo(40, 20, 99, 39) foo(40, 3.14, "hello", y="world") foo(1.45, 3.14, x="hello", y="world")

以下函数调用将引发异常TypeError,因为a和be作为关键字参数传递。

foo(a=1.45, b=3.14, x=1, y=4)

TypeError:foo()获取了一些作为关键字参数传递的仅限位置的参数:“甲、B”通过在函数定义中添加正斜杠(/)作为最后一个参数,可以定义一个只接受位置参数的函数。

def pow(x, y, /): return x ** y

在上面的函数定义中,所有参数(x和y)都是位置参数。这里,按名称传递参数是无效的,这将导致TypeError。pow(2, 3); pow(3, 9)有效,而pow(x=3, y=9)无效,这将引发TypeError



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有